home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / sgitcl_dev.idb / usr / sgitcl / include / tm.h.z / tm.h
C/C++ Source or Header  |  1996-03-14  |  6KB  |  219 lines

  1.  
  2. #ifndef _TM_H
  3. #define _TM_H
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <tcl.h>
  8. #include <Xm/Xm.h>
  9.  
  10. #if USE_UIL
  11. #include <Mrm/MrmPublic.h>
  12. #endif
  13.  
  14. #if XmVersion == 1001
  15. #  define MOTIF11
  16. #endif
  17.  
  18. #ifdef MOTIF11
  19. #include <X11/StringDefs.h>
  20. #include <X11/Xatom.h>
  21. #define XmFONTLIST_DEFAULT_TAG XmSTRING_DEFAULT_CHARSET
  22. #endif
  23.  
  24. #ifdef DEBUG_MALLOC
  25. #include <dbmalloc.h>
  26. #endif
  27.  
  28. #define TM_MAXARGS 100
  29. #define TM_NUM_PARAMS 10
  30.  
  31. /* global vbl names for stuf used in Text verify callbacks */
  32. #define TM_TEXT_DOIT "_Tm_Text_Doit"
  33. #define TM_TEXT_STARTPOS "_Tm_Text_StartPos"
  34. #define TM_TEXT_ENDPOS "_Tm_Text_EndPos"
  35. #define TM_TEXT_PTR "_Tm_Text_Ptr"
  36. #define TM_TEXT_LENGTH "_Tm_Text_Length"
  37.  
  38. /* global vbl names for result capturing */
  39. #define TM_RESULT_BUF "_Tm_Result_Buf"
  40. #define TM_SAVE_RESULT "_Tm_Save_Result"
  41.  
  42. /* global vbl names for stuff used in convertProc in D&D */
  43. #define TM_CONVERT_TYPE "_Tm_Convert_Type"
  44. #define TM_CONVERT_VALUE "Tm_Convert_Value"
  45.  
  46. /* forward def */
  47. struct Tm_Widget;
  48.  
  49. /*
  50.  * This contains info that is common to all widgets
  51.  * created under one display
  52.  */
  53. typedef struct Tm_Display {
  54.     Display    *display;
  55.     Widget    toplevel;
  56.     Widget    commWidget;    /* used for send command */
  57.     Atom     registryProperty;
  58.     Atom    commProperty;
  59.     int        numshellwidgets;
  60.     struct Tm_Widget  **shellwidgets;
  61.     struct Tm_Display *next;
  62. #if USE_UIL
  63.     MrmHierarchy hierarchy;
  64. #endif
  65. } Tm_Display;
  66.  
  67. /*
  68.  * each widget created by tcl has one of these
  69.  */
  70. typedef struct Tm_Widget {
  71.     Widget    widget;        /* Xt widget */
  72.     char    *pathName;    /* full path from `.' */
  73.     Tcl_Interp  *interp;    /* interp for this widget */
  74.     char     *parent;    /* parent path name from `.' */
  75.     char    *dropProc;    /* D&D proc */
  76.     char    *transferProc;    /* D&D proc */
  77.     char     *convertProc;    /* D&D proc */
  78.     Tm_Display    *displayInfo;    /* info shared by all in this interp */
  79. }   Tm_Widget;
  80.  
  81. /* This structure is used as the client data field in callback functions */
  82. typedef struct Tm_ClientData {
  83.     char    *callback_func;
  84.     Tm_Widget   *widget_info;
  85. }   Tm_ClientData;
  86.  
  87. /* This structure is used for Input Handlers */
  88. typedef struct Tm_InputData {
  89.     Tcl_Interp *interp;
  90.     char *command;    /* command to be executed by input handler */
  91. } Tm_InputData;
  92.  
  93. /* This structure is used for Timer Handlers */
  94. typedef struct Tm_TimerData {
  95.     Tcl_Interp *interp;
  96.     char *command;    /* command to be executed by input handler */
  97. } Tm_TimerData;
  98.  
  99. typedef struct {
  100.     char *fileName;
  101. }   Tm_ResourceType, *Tm_ResourceTypePtr;
  102.  
  103. typedef int (*Tm_WidgetCmdProc)_ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp,
  104.             int argc, char **argv));
  105.  
  106. /* used in drag and drop */
  107. typedef struct Tm_TransferStruct {
  108.     char *value;
  109.     char *closure;
  110. } Tm_TransferStruct;
  111.  
  112. /* some resource values need to be reclaimed after use in Set/GetValues
  113.    this data structure is used for a list of them
  114.  */
  115.  
  116. typedef void (*Tm_FreeProc) _ANSI_ARGS_((char *));
  117.  
  118. typedef struct Tm_FreeResourceType {
  119.     char *data;
  120.     Tm_FreeProc free;
  121. } Tm_FreeResourceType;
  122.  
  123.  
  124. /*
  125.  * The following structure defines all of the commands supported by
  126.  * Tm, and the C procedures that execute them.
  127.  */
  128.  
  129. typedef struct Tm_Cmd {
  130.     char *name;            /* Name of command. */
  131.     int (*cmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp,
  132.         int argc, char **argv));
  133.                 /* Command procedure. */
  134.     int (*widgetCmdProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp,
  135.         int argc, char **argv));
  136.                 /* Widget Command procedure. */
  137. } Tm_Cmd;
  138.  
  139. extern Tm_Cmd Tm_Commands[];       /* the commands for Motif widgets */
  140. extern Tm_Cmd Tm_ExternCommands[]; /* the commands for extension widgets */
  141.  
  142.  
  143. /* strings for use in widget create commands */
  144. #define xmArrowButton        "xmArrowButton"
  145. #define xmBulletinBoard        "xmBulletinBoard"
  146. #define xmBulletinBoardDialog    "xmBulletinBoardDialog"
  147. #define xmCascadeButton        "xmCascadeButton"
  148. #define xmCommand        "xmCommand"
  149. #define xmDialogShell        "xmDialogShell"
  150. #define xmDrawingArea        "xmDrawingArea"
  151. #define xmDrawnButton        "xmDrawnButton"
  152. #define xmErrorDialog        "xmErrorDialog"
  153. #define xmFileSelectionBox    "xmFileSelectionBox"
  154. #define xmFileSelectionDialog    "xmFileSelectionDialog"
  155. #define xmForm            "xmForm"
  156. #define xmFormDialog        "xmFormDialog"
  157. #define xmFrame            "xmFrame"
  158. #define xmInformationDialog    "xmInformationDialog"
  159. #define xmLabel            "xmLabel"
  160. #define xmList            "xmList"
  161. #define xmMainWindow        "xmMainWindow"
  162. #define xmMenuBar        "xmMenuBar"
  163. #define xmMessageBox        "xmMessageBox"
  164. #define xmMessageDialog        "xmMessageDialog"
  165. #define xmOptionMenu        "xmOptionMenu"
  166. #define xmPanedWindow        "xmPanedWindow"
  167. #define xmPopupMenu        "xmPopupMenu"
  168. #define xmPromptDialog        "xmPromptDialog"
  169. #define xmPulldownMenu        "xmPulldownMenu"
  170. #define xmPushButton        "xmPushButton"
  171. #define xmQuestionDialog    "xmQuestionDialog"
  172. #define xmRowColumn        "xmRowColumn"
  173. #define xmScale            "xmScale"
  174. #define xmScrollBar        "xmScrollBar"
  175. #define xmScrolledList        "xmScrolledList"
  176. #define xmScrolledText        "xmScrolledText"
  177. #define xmScrolledWindow    "xmScrolledWindow"
  178. #define xmSelectionBox        "xmSelectionBox"
  179. #define xmSelectionDialog    "xmSelectionDialog"
  180. #define xmSeparator        "xmSeparator"
  181. #define xmText            "xmText"
  182. #define xmTextField        "xmTextField"
  183. #define xmToggleButton        "xmToggleButton"
  184. #define xmTopLevelShell        "topLevelShell"
  185. #define xmWarningDialog        "xmWarningDialog"
  186. #define xmWorkingDialog        "xmWorkingDialog"
  187.  
  188. #if XmVERSION >= 2
  189. #define xmComboBox        "xmComboBox"
  190. #define xmContainer        "xmContainer"
  191. #define xmCSText        "xmCSText"
  192. #define xmDropDownComboBox    "xmDropDownComboBox"
  193. #define xmDropDownList        "xmDropDownList"
  194. #define xmIconGadget        "xmIconGadget"
  195. #define xmNotebook        "xmNotebook"
  196. #define xmSpinBox        "xmSpinBox"
  197. #endif
  198.  
  199. /* this is used to link the string used in widget creation to the
  200.  * widget class
  201.  */
  202. typedef struct Tm_CommandToClassType {
  203.     char *command;
  204.     WidgetClass *clas;
  205. } Tm_CommandToClassType;
  206.  
  207. extern Tm_CommandToClassType Tm_CommToClass[];        /* Motif widgets */
  208. extern Tm_CommandToClassType Tm_ExternCommandToClass[];    /* external widgets */
  209.  
  210. /* mapping between reasons in callback call_data and the strings
  211.    that tclMotif would return in %reason substitutions
  212.  */
  213. typedef struct Tm_ReasonType {
  214.     int reason;
  215.     char *str;
  216. } Tm_ReasonType;
  217.  
  218. #endif /* _TM_H */
  219.